La fonction ne fait que du input/output
La fonction dépend de libraries merdiques
Il serait compliquer de tout découpler
Écrire une fonction qui prend en argument un url ainsi qu'un nom de fichier et qui télécharge l'url dans le fichier.
Tester la fonction
truc
utiliser l'url https://httpbin.org/get
utiliser la librarie requests
il n'y a pas de trucs ici, il faut faire du IO :(
import requests
from pathlib import Path
from shutil import copyfileobj
def download_to_file(url: str, dest: Path) -> None:
with requests.get(url, stream=True) as resp:
resp.raise_for_status()
with open(dest, 'wb') as file_:
copyfileobj(resp.raw, file_)
download_to_file("https://httpbin.org/get", Path("/") / "tmp" / "foo")
--------------------------------------------------------------------------- AttributeError Traceback (most recent call last) Cell In[8], line 10 6 resp.raise_for_status() 7 print(resp.file) ---> 10 download_to_file("https://httpbin.org/get", Path("/") / "tmp" / "foo") Cell In[8], line 7, in download_to_file(url, file_) 5 with requests.get(url, stream=True) as resp: 6 resp.raise_for_status() ----> 7 print(resp.file) AttributeError: 'Response' object has no attribute 'file'
Utilisé du IO mais très restraint (pas toujours possible)
Mocker
Python possède une des meilleur libraries pour faire des mocks